大家好,今天要來和大家聊聊數位簽章是什麼
昨天我們已經介紹了雜湊函數(hash functions),如果還沒看過的可以先去看一下,先把雜湊搞懂再來看這篇會比較好理解(Day 7 : 觀念篇 - 密碼學裡的雜湊函數是什麼?它跟加密差在哪?)
那我們先來講數位簽章是什麼
通常我們簽立一份文件時,都會簽名+蓋手印來證明這是我本人簽署的
那如果把情況搬來網路上,該怎麼確認這是你本人簽的?在傳輸過程中有沒有被 hacker 竄改過?
於是,數位簽章就出現啦
它是透過RSA加密文件給對方,再讓對方檢驗這到底是不是你本人傳輸過來的,所以也稱數位簽名
數位簽章可以證明:
所以數位簽章有「無法」被偽造、竄改等特性,同時他也存在不可否認性
因為這份簽章全世界只有「你一個人」可以簽出來,所以它既無法被偽造,你也無法否認曾經簽過這份文件
至於竄改簽章的部分,其實是「可以」被竄改的
但遭到竄改後,它內容檢驗就不會通過了,因為簽章可以檢驗「檔案的完整性」,所以也可以直接說「簽章無法遭到竄改」
那使用數位簽章進行傳輸的步驟為何呢?
這樣講太抽象了,這裡我們來舉個例子,假設今天海綿寶寶想傳 mail 問章魚哥要不要去抓水母
這時海綿寶寶對 mail 進行了「簽章」,證明這封 mail 是他「本人」傳的
而章魚哥收到 mail 時要進行「驗簽章」,確認這封 mail 是「海綿寶寶本人」傳的
首先,海綿寶寶會先對這封 mail 的「明文訊息」進行雜湊,並得到一串雜湊值
得到雜湊值後,海綿寶寶要使用他自己的「秘密金鑰」,對這段雜湊值進行「加密」
而這段雜湊值進行加密後,得到的就是「簽章」
這時海綿寶寶把「原本的明文訊息」和「簽章」放在一起,透過網路傳送給章魚哥
章魚哥收到 mail 後,拿海綿寶寶的「公開金鑰」對簽章進行「解密」
解密後,就會拿到「原本的明文訊息」經雜湊後,所得到的雜湊值
這時章魚哥再對 mail 裡的「明文訊息」進行雜湊,得到第二個雜湊值
再將兩段的雜湊值進行比對,如果相同,代表此封mail的內容沒有遭到毀損或加料,驗簽章成功。此時就能確定,那段明文訊息是海綿寶寶「本人」傳給章魚哥的
如果不相同,代表這封mail有被hacker動過手腳,驗簽章失敗
所以嚴格來說,簽章的加密不是「加密」,或者說不是為了「隱密」,因為使用公開金鑰就能解開了,所以簽章每個人都能解密來看
以上就是今天的介紹
希望大家看完能對數位簽章的概念、傳輸模式更加了解